home *** CD-ROM | disk | FTP | other *** search
-
- -- -----------------------------------------------------------------
- -- Init
- -- -----------------------------------------------------------------
- local function prog_init()
- initModels()
- sound_playMusic("music/rybky04.ogg")
- local pokus = getRestartCount()
-
-
- -- -------------------------------------------------------------
- local function prog_init_room()
- local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
-
- room.podekovat = 0
- if random(100) < 50 then
- room.atmosf = random(200) + 100
- room.podiv = -1
- else
- room.podiv = 20
- room.atmosf = -1
- end
- room.chob = random(2) + 1
- room.truh = random(40) + 10
- room.mov = 0
- room.nekro = 0
- local screenShiftX, screenShiftY = 0, 0
- --NOTE: turn off standard black jokes
- stdBlackJoke = function() end
-
- return function()
- if not small:isAlive() or not big:isAlive() then
- if room.nekro == 0 then
- planDialogSet(6, "k1-pap-karamba", 101, papouch, "stav")
- end
- room.nekro = 1
- else
- if chobot.dir ~= dir_no then
- room.podekovat = 1
- end
- if room.atmosf >= 0 then
- if room.atmosf == 0 then
- if no_dialog() then
- addv(50, "k1-v-citis")
- addm(1, "k1-m-kolebku")
- addv(2, "k1-v-cit")
- else
- room.atmosf = room.atmosf + 20
- end
- end
- room.atmosf = room.atmosf - 1
- end
- if room.podiv >= 0 then
- if xdist(small, lebka) <= 2 and look_at(small, lebka) and lebka.dir == dir_no then
- if room.podiv == 0 and small.cinnost == 0 then
- if no_dialog() then
- addm(20, "k1-m-podivin")
- addv(2, "k1-v-proc")
- addm(2, "k1-m-lebku")
- addv(2, "k1-v-jejeho")
- if random(2) == 0 then
- addm(5, "k1-m-mysli")
- end
- else
- room.podiv = room.podiv + 10
- end
- end
- room.podiv = room.podiv - 1
- end
- end
- if room.podekovat == 0 and small.Y <= 7 and small.X == 17 then
- room.podekovat = 1
- if no_dialog() then
- addm(5, "k1-m-diky")
- addv(3, "k1-v-radose")
- end
- end
- switch(room.chob){
- [1] = function()
- if small.X == chobot.X + 1 and small.Y == chobot.Y then
- if no_dialog() then
- addv(0, "k1-v-opatrne")
- addm(3, "k1-m-tospisona")
- end
- room.chob = 0
- end
- end,
- [2] = function()
- if look_at(small, chobot) and dist(small, chobot) == 2 then
- if no_dialog() then
- addm(4, "k1-m-chobotnice")
- addv(6, "k1-v-patrila")
- planDialogSet(8, "k1-pap-drahousek", 101, papouch, "stav")
- end
- room.chob = 0
- end
- end,
- }
- if room.truh >= 0 then
- if dist(small, truhla) < 2 then
- if room.truh == 0 then
- if no_dialog() then
- room.truh = room.truh - 1
- switch(random(2)){
- [0] = function()
- addm(0, "k1-m-copak")
- addv(3, "k1-v-kdovi")
- planDialogSet(6, "k1-pap-drahokamy", 101, papouch, "stav")
- end,
- [1] = function()
- addm(0, "k1-m-myslis")
- addv(random(10), "k1-v-bedna")
- end,
- }
- else
- room.truh = room.truh - 10
- end
- else
- room.truh = room.truh - 1
- end
- end
- end
-
- if room.mov == 0 and random(100) < 1 then
- room.mov = 1
- end
- if room.mov == 1 and big:getTouchDir() ~= dir_no and room:getTouchDir() ~= dir_no then
- local touchDir = room:getTouchDir()
- local shiftX, shiftY = getDirShift(touchDir)
- screenShiftX = screenShiftX + shiftX * 15
- screenShiftY = screenShiftY + shiftY * 15
- game_setScreenShift(screenShiftX, screenShiftY)
- if no_dialog() then
- room.mov = 2
- addm(4, "k1-m-codelas")
- addv(3, "k1-v-promin")
- end
- end
- if room.mov == 1 or room.mov == 2 then
- screenShiftX = screenShiftX - screenShiftX / 10
- screenShiftY = screenShiftY - screenShiftY / 10
- game_setScreenShift(screenShiftX, screenShiftY)
- end
- end
- end
- end
-
- -- -------------------------------------------------------------
- local function prog_init_truhla()
- return function()
- if truhla.dir ~= dir_no and level_isNewRound() then
- truhla:talk("k1-x-vrz", VOLUME_FULL)
- end
- end
- end
-
- -- -------------------------------------------------------------
- local function prog_init_papouch()
- local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
-
- papouch.stav = 0
- papouch.strcil = 0
- papouch.smalse = 0
- papouch.nekoukej = 0
- papouch.tlustej = 0
-
- return function()
- switch(papouch.stav){
- [0] = function()
- if no_dialog() then
- if (papouch.dir == dir_left or papouch.dir == dir_right) and papouch.strcil == 0 and random(6) == 0 then
- papouch.strcil = 1
- planDialogSet(0, "k1-pap-nestrkej", 101, papouch, "stav")
- elseif papouch.Y == 18 and papouch.smalse == 0 then
- papouch.smalse = 1
- planDialogSet(0, "k1-pap-prekazet", 101, papouch, "stav")
- elseif poklop.Y == 7 and small.Y > 7 and small.Y < 17 and small.X > 7 and big.Y < 7 and papouch.smalse == 0 then
- papouch.smalse = 1
- planDialogSet(0, "k1-pap-prcice", 101, papouch, "stav")
- elseif papouch.nekoukej == 0 and dist(small, papouch) <= 1 and random(100) < 5 then
- papouch.nekoukej = 1
- planDialogSet(0, "k1-pap-vodprejskni", 102, papouch, "stav")
- elseif papouch.nekoukej == 0 and dist(big, papouch) <= 1 and random(100) < 5 then
- papouch.nekoukej = 2
- planDialogSet(0, "k1-pap-vodprejskni", 102, papouch, "stav")
- elseif papouch.nekoukej == 1 and dist(small, papouch) > 2 and random(100) < 25 then
- planDialogSet(0, "k1-pap-noproto", 101, papouch, "stav")
- elseif papouch.nekoukej == 2 and dist(big, papouch) > 2 and random(100) < 25 then
- planDialogSet(0, "k1-pap-noproto", 101, papouch, "stav")
- elseif papouch.tlustej == 0 and trubka.X >= 13 and trubka.Y == 18 then
- papouch.tlustej = 1
- planDialogSet(0, "k1-pap-sestlustej", 101, papouch, "stav")
- papouch.stav = 1
- elseif random(250) == 0 then
- switch(random(7)){
- [0] = function()
- planDialogSet(0, "k1-pap-sucharek", 101, papouch, "stav")
- end,
- [1] = function()
- planDialogSet(0, "k1-pap-kruty", 101, papouch, "stav")
- end,
- [2] = function()
- planDialogSet(0, "k1-pap-3xkruty", 101, papouch, "stav")
- end,
- [3] = function()
- planDialogSet(0, "k1-pap-kruci", 101, papouch, "stav")
- end,
- [4] = function()
- planDialogSet(0, "k1-pap-sakris", 101, papouch, "stav")
- end,
- [5] = function()
- planDialogSet(0, "k1-pap-trhnisi", 101, papouch, "stav")
- end,
- [6] = function()
- planDialogSet(0, "k1-pap-problem", 101, papouch, "stav")
- end,
- }
- papouch.stav = 1
- end
- end
- end,
- [101] = function()
- if papouch.nekoukej > 0 then
- papouch.nekoukej = 3
- end
- papouch.afaze = random(2)
- end,
- [102] = function()
- papouch.afaze = random(2)
- end,
- }
- papouch:updateAnim()
- end
- end
-
- -- -------------------------------------------------------------
- local function prog_init_chobot()
- local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
-
- chobot.lastdir = dir_no
- chobot.oci = 0
- chobot.chapadla = 0
- chobot.akcnost = 2
-
- return function()
- if chobot.dir ~= dir_no then
- chobot.akcnost = 7
- elseif chobot.akcnost > 2 and math.mod(game_getCycles(), 5) == 0 then
- chobot.akcnost = chobot.akcnost - 1
- end
- if chobot.dir ~= chobot.lastdir then
- if not chobot:isTalking() then
- if chobot.dir == dir_down then
- chobot:talk("k1-chob-p", VOLUME_FULL)
- elseif chobot.dir ~= dir_no then
- switch(random(3)){
- [0] = function()
- chobot:talk("k1-chob-1", VOLUME_FULL)
- end,
- [1] = function()
- chobot:talk("k1-chob-2", VOLUME_FULL)
- end,
- [2] = function()
- chobot:talk("k1-chob-3", VOLUME_FULL)
- end,
- }
- end
- end
- chobot.lastdir = chobot.dir
- end
- if chobot.dir == dir_no and math.mod(game_getCycles(), chobot.akcnost) == 0 then
- if random(2) == 0 then
- if chobot.chapadla < 2 then
- chobot.chapadla = chobot.chapadla + 1
- else
- chobot.chapadla = 0
- end
- else
- if chobot.chapadla > 0 then
- chobot.chapadla = chobot.chapadla - 1
- else
- chobot.chapadla = 2
- end
- end
- end
- pomb1 = xdist(small, chobot) == 0 and ydist(small, chobot) <= 0 or xdist(big, chobot) == 0 and ydist(big, chobot) <= 0
- pomb1 = pomb1 or chobot.dir ~= dir_no
- if pomb1 then
- chobot.oci = 1
- end
- switch(chobot.oci){
- [0] = function()
- if random(100) < 10 then
- chobot.oci = 2
- end
- end,
- [2] = function()
- if random(100) < 10 then
- chobot.oci = 0
- end
- end,
- [1] = function()
- if not pomb1 and random(100) < 20 then
- chobot.oci = 0
- end
- end,
- }
- chobot.afaze = chobot.oci + 3 * chobot.chapadla
- chobot:updateAnim()
- end
- end
-
- -- -------------------------------------------------------------
- local function prog_init_small()
- local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
-
- small.leb = 0
- small.cinnost = 0
- small.delay = 0
-
- return function()
- if no_dialog() then
- switch(small.cinnost){
- [0] = function()
- if lebka.dir ~= dir_no and lebka.dir ~= dir_down and small.dir ~= dir_no and (small.leb == 0 or random(100) < 10) and level_isNewRound() then
- small.leb = 1
- small:talk("k1-m-fuj")
- end
- end,
- }
- end
- end
- end
-
- -- -------------------------------------------------------------
- local function prog_init_big()
- local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
-
- big.cinnost = 0
-
- end
-
- -- --------------------
- local update_table = {}
- local subinit
- subinit = prog_init_room()
- if subinit then
- table.insert(update_table, subinit)
- end
- subinit = prog_init_truhla()
- if subinit then
- table.insert(update_table, subinit)
- end
- subinit = prog_init_papouch()
- if subinit then
- table.insert(update_table, subinit)
- end
- subinit = prog_init_chobot()
- if subinit then
- table.insert(update_table, subinit)
- end
- subinit = prog_init_small()
- if subinit then
- table.insert(update_table, subinit)
- end
- subinit = prog_init_big()
- if subinit then
- table.insert(update_table, subinit)
- end
- return update_table
- end
- local update_table = prog_init()
-
-
- -- -----------------------------------------------------------------
- -- Update
- -- -----------------------------------------------------------------
- function prog_update()
- for key, subupdate in pairs(update_table) do
- subupdate()
- end
- end
-
-